<!--
Copyright © 2017, Che-Wei Hsu <cwxhsu@gmail.com>
This file is part of the MintCM.
Some rights reserved. See README.
-->

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../css/mcm_style.css">
</head>

<body class="css_body">

<div class="css_div_box_frame_full">
  <div class="css_div_box_title">chapter 06-01</div>
  <div class="css_div_box_content">
  </div>
</div>
<br>

<div class="css_div_box_frame_full">
  <div class="css_div_box_title">啟動執行的設定</div>
  <div class="css_div_box_content">
    <br>

    <div class="css_div_hook" id="hook_0601_mint_cm_boot_01"></div>
    mcm_daemon 啟動後, 會執行的動作 :<br>
    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">01.&nbsp;</td>
        <td class="css_td_list1_r">
          載入資料模型. (<a href="mcm_0201.html">#02-01#</a> 的設定)
        </td>
      </tr>
      <tr>
        <td class="css_td_list1_l">02.&nbsp;</td>
        <td class="css_td_list1_r">
          載入資料值檔案 (資料預設值檔案 或 資料現在值檔案) 資料. (<a href="mcm_0202.html">#02-02#</a> 的設定)
        </td>
      </tr>
      <tr>
        <td class="css_td_list1_l">03.&nbsp;</td>
        <td class="css_td_list1_r">
          載入內部模組.
        </td>
      </tr>
      <tr>
        <td class="css_td_list1_l">04.&nbsp;</td>
        <td class="css_td_list1_r">
          檢查資料是否有錯誤並處理.
        </td>
      </tr>
      <tr>
        <td class="css_td_list1_l">05.&nbsp;</td>
        <td class="css_td_list1_r">
          執行內部模組中其他部分的啟動表.
        </td>
      </tr>
      <tr>
        <td class="css_td_list1_l">06.&nbsp;</td>
        <td class="css_td_list1_r">
          提供外部程式存取.
        </td>
      </tr>
    </table>
    <br>

    在 [05] 的點, 可以設定程式啟動要執行哪些內部模組來做初始的設定或處理.
    <br><br>

  </div>
</div>
<br>

<div class="css_div_box_frame_full">
  <div class="css_div_box_title">變數格式的說明</div>
  <div class="css_div_box_content">
    <br>

    <div class="css_div_hook" id="hook_0601_this_session_01"></div>
    <font class="css_font_b1">[struct mcm_service_session_t *this_session]</font><br>
    請求端的連線資訊.<br>
    會使用到的結構成員 :<br>
    <table class="css_table_list2">
      <tr>
        <td class="css_td_list2_l1">
          <font class="css_font_r1">MCM_DTYPE_LIST_TD</font><br>
          <font class="css_font_g1">call_from</font>
        </td>
        <td class="css_td_list2_r1">
          表示是誰呼叫內部模組 <a href="mcm_0302.html#hook_0302_call_from_01">[詳細]</a>
        </td>
      </tr>
    </table>
    啟動執行時, call_from 的值會是 MCM_CFROM_BOOT, 表示目前是程式啟動的第一次執行內部模組.
    <br><br>

  </div>
</div>
<br>

<div class="css_div_box_frame_full">
  <div class="css_div_box_title">內部模組中其他部分的啟動表的設定</div>
  <div class="css_div_box_content">
    <br>

    啟動表要放在 <font class="css_font_b1">mint_cm/mcm_daemon/mcm_module</font> 內, 新增一個 C 檔案, 內容為 :<br>
    <div class="css_div_block">
      #include "mcm_lib/mcm_lheader/mcm_type.h"<br>
      #include "mcm_lib/mcm_lheader/mcm_return.h"<br>
      #include "mcm_lib/mcm_lheader/mcm_debug.h"<br>
      #include "../mcm_action_handle_define.h"<br><br>
      struct mcm_action_module_t MCM_ACTION_CUSTOM_MODULE_BOOT_PROFILE_LIST_NAME[] =<br>
      {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;{""}<br>
      };<br><br>
      <font class="css_font_g1">
      struct mcm_action_module_t MCM_ACTION_CUSTOM_MODULE_BOOT_OTHER_LIST_NAME[] =<br>
      {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;{""}<br>
      };</font><br><br>
      int MCM_ACTION_CUSTOM_RESET_DEFAULT_NAME(<br>
      &nbsp;&nbsp;&nbsp;&nbsp;void)<br>
      {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;return MCM_RCODE_PASS;<br>
      }
    </div>
    <br><br>

    此章節只需要用到 <font class="css_font_g1">MCM_ACTION_CUSTOM_MODULE_BOOT_OTHER_LIST_NAME[]</font>
    <br><br>

    在列表中填入要執行的模組函式名稱, 會依序執行, 最後一組必須要是 {""}.<br>
    例如 :<br>
<pre class="css_pre_code">
struct mcm_action_module_t MCM_ACTION_CUSTOM_MODULE_BOOT_OTHER_LIST_NAME[] =
{
    {"mcm_module_boot_config_01"},
    {"mcm_module_boot_config_02"},
    {"mcm_module_boot_config_03"},
    {"mcm_module_boot_config_01"},
    {""}
}
</pre>
<br><br>

  </div>
</div>
<br>

<div class="css_div_box_frame_full">
  <div class="css_div_box_title">注意事項</div>
  <div class="css_div_box_content">
    <br>

    內部模組在啟動執行的期間可以使用內部模組的回傳資訊 (<a href="mcm_0501.html">#05-01#</a>),
    但是不會有任何作用.
    <br><br>

    執行 mcm_daemon 時資料現在值檔案的儲存方式是使用手動儲存的話 (<a href="mcm_0203.html">#02-03#</a>),
    必須在最後一個啟動模組中加入儲存資料的動作 (<a href="mcm_0407.html">#04-07#</a>).
    <br><br>

  </div>
</div>
<br>

<div class="css_div_box_frame_full">
  <div class="css_div_box_title">範例程式的使用</div>
  <div class="css_div_box_content">
    <br>

    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">01.&nbsp;</td>
        <td class="css_td_list1_r">
          範例程式目錄在 <font class="css_font_b1">mint_cm/usage/example/0601</font>.
        </td>
      </tr>
    </table>
    <br><br>

    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">02.&nbsp;</td>
        <td class="css_td_list1_r">
          下面關於 <font class="css_font_p1">make</font> 的操作沒有特別註明的話都是在
          <font class="css_font_b1">mint_cm</font> 目錄.
        </td>
      </tr>
    </table>
    <br><br>

    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">03.&nbsp;</td>
        <td class="css_td_list1_r">
          第一次使用, 使用 <font class="css_font_p1">make example_add KEY=0601</font>
          載入範例並編譯.
        </td>
      </tr>
    </table>
    <br><br>

    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">04.&nbsp;</td>
        <td class="css_td_list1_r">
          執行 mcm_daemon 就可以看到結果.
        </td>
      </tr>
    </table>
    <br><br>

    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">05.&nbsp;</td>
        <td class="css_td_list1_r">
          測試完畢不使用後, 使用 <font class="css_font_p1">make example_del KEY=0601</font>
          將範例移除.
        </td>
      </tr>
    </table>
    <br><br>

    <table class="css_table_list1">
      <tr>
        <td class="css_td_list1_l">06.&nbsp;</td>
        <td class="css_td_list1_r">
          範例程式目錄下的檔案在做完 <font class="css_font_p1">make example_add</font>
          後會複製到真正使用的位置, 要修改做測試的話要改在複製後的.<br>
          <table class="css_table_list2">
            <tr>
              <td class="css_td_list2_r1">
                來源 <font class="css_font_b1">profile/mcm_data_profile_0601.xml</font><br>
                目地 <font class="css_font_b1">mint_cm/mcm_build/mcm_data_profile.xml</font><br>
                資料模型範例<br>
                有修改要使用 <font class="css_font_p1">make all</font> 重新編譯
              </td>
            </tr>
            <tr>
              <td class="css_td_list2_r1">
                來源 <font class="css_font_b1">profile/mcm_store_profile_default_0601.txt</font><br>
                目地 <font class="css_font_b1">mint_cm/mcm_build/mcm_store_profile_default.txt</font><br>
                資料預設值範例<br>
                使用 <font class="css_font_p1">make all</font> 後會再複製到 <font class="css_font_b1">mint_cm/run</font>
              </td>
            </tr>
            <tr>
              <td class="css_td_list2_r1">
                來源 <font class="css_font_b1">module/mcm_custom_0601.c</font><br>
                目地 <font class="css_font_b1">mint_cm/mcm_daemon/mcm_module</font><br>
                啟動表範例<br>
                有修改要使用 <font class="css_font_p1">make all</font> 重新編譯
              </td>
            </tr>
            <tr>
              <td class="css_td_list2_r1">
                來源 <font class="css_font_b1">module/mcm_module_0601.c</font><br>
                目地 <font class="css_font_b1">mint_cm/mcm_daemon/mcm_module</font><br>
                內部模組範例<br>
                有修改要使用 <font class="css_font_p1">make all</font> 重新編譯
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
    <br>

  </div>
</div>
<br>

</body>

</html>
